package org.tity.test.java.lang;

import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.HashMap;
import java.util.Map;

import org.tity.commons.lang.DataParser;

public class GenericMethod {
	
	public static void main(String[] args) {
		Map<String,Integer> map=toValueMap("a","ba");
	}
	
	
	public static <K,V> Map<K,V> toValueMap(String keyField,String valueField) {
		
//		class MM extends HashMap<K, V> {
//			public MM() {
////				ParameterizedType type = (ParameterizedType) this.getClass().getGenericSuperclass();  
////		        Class classt = (Class) type.getActualTypeArguments()[0];  
////		        System.out.println();
//			}
//		}
//		
//		MM map = new MM();
		
		HashMap<K, V> map = new HashMap<K, V>();
		
		
		
//		ParameterizedType type = (ParameterizedType) map.getClass().getGenericSuperclass();  
//        Class classt = (Class) type.getActualTypeArguments()[0];  
//        System.out.println(classt);  
        
//        DataParser.parse(type, value)
		Object oo=map.getClass().getTypeParameters();
		Type[] uu=map.getClass().getGenericInterfaces();
		
		Type[] types=((ParameterizedType) map.getClass().getGenericSuperclass()).getActualTypeArguments();
		Type kType=types[0];
//		kType
		System.out.println(kType.getTypeName());
//		Object[] arr=((ParameterizedType) map.getClass().getGenericSuperclass()).getActualTypeArguments();
//		Class <K> serviceType = (Class <K>)arr [0];
//		return serviceType;
//		
//		Object aa=(Class<K>) ((ParameterizedType) map.getClass().getGenericSuperclass()).getActualTypeArguments()[0];
		
		return null;
	}
}
